package org.wu.framework.ssh.server.platform.application;

import org.wu.framework.ssh.server.platform.application.command.ssh.server.config.*;
import org.wu.framework.web.response.Result;
import org.wu.framework.ssh.server.platform.domain.model.ssh.server.config.SshServerConfig;
import org.wu.framework.ssh.server.platform.application.dto.SshServerConfigDTO;
import java.util.List;
import org.wu.framework.lazy.orm.database.lambda.domain.LazyPage;

/**
 * describe ssh服务器信息 
 *
 * @author Jia wei Wu
 * @date 2025/09/13 10:07 晚上
 * @see org.wu.framework.lazy.orm.core.persistence.reverse.lazy.ddd.DefaultDDDLazyApplication 
 **/

public interface SshServerConfigApplication {


    /**
     * describe 新增ssh服务器信息
     *
     * @param sshServerConfigStoryCommand 新增ssh服务器信息     
     * @return {@link Result<SshServerConfig>} ssh服务器信息新增后领域对象     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result<SshServerConfig> story(SshServerConfigStoryCommand sshServerConfigStoryCommand);

    /**
     * describe 批量新增ssh服务器信息
     *
     * @param sshServerConfigStoryCommandList 批量新增ssh服务器信息     
     * @return {@link Result<List<SshServerConfig>>} ssh服务器信息新增后领域对象集合     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result<List<SshServerConfig>> batchStory(List<SshServerConfigStoryCommand> sshServerConfigStoryCommandList);

    /**
     * describe 更新ssh服务器信息
     *
     * @param sshServerConfigUpdateCommand 更新ssh服务器信息     
     * @return {@link Result<SshServerConfig>} ssh服务器信息领域对象     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result<SshServerConfig> updateOne(SshServerConfigUpdateCommand sshServerConfigUpdateCommand);

    /**
     * describe 查询单个ssh服务器信息
     *
     * @param sshServerConfigQueryOneCommand 查询单个ssh服务器信息     
     * @return {@link Result<SshServerConfigDTO>} ssh服务器信息DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result<SshServerConfigDTO> findOne(SshServerConfigQueryOneCommand sshServerConfigQueryOneCommand);


    Result<SshServerConfigDTO> findOneById(Integer id);
    /**
     * describe 查询多个ssh服务器信息
     *
     * @param sshServerConfigQueryListCommand 查询多个ssh服务器信息     
     * @return {@link Result <List<SshServerConfigDTO>>} ssh服务器信息DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result <List<SshServerConfigDTO>> findList(SshServerConfigQueryListCommand sshServerConfigQueryListCommand);

    /**
     * describe 分页查询多个ssh服务器信息
     *
     * @param sshServerConfigQueryListCommand 分页查询多个ssh服务器信息     
     * @return {@link Result <LazyPage<SshServerConfigDTO>>} 分页ssh服务器信息DTO对象     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result <LazyPage<SshServerConfigDTO>> findPage(int size,int current,SshServerConfigQueryListCommand sshServerConfigQueryListCommand);

    /**
     * describe 删除ssh服务器信息
     *
     * @param sshServerConfigRemoveCommand 删除ssh服务器信息     
     * @return {@link Result<SshServerConfig>} ssh服务器信息     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    Result<SshServerConfig> remove(SshServerConfigRemoveCommand sshServerConfigRemoveCommand);

    /**
     * describe 导出ssh服务器信息
     *
     * @param sshServerConfigQueryListCommand 导出ssh服务器信息     
     * @return {@link List<SshServerConfigExcelExport>} ssh服务器信息     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    public List<SshServerConfigExcelExport> exportExcel(SshServerConfigQueryListCommand sshServerConfigQueryListCommand);

    /**
     * describe 导入ssh服务器信息
     *
     * @param sshServerConfigExcelImportList 导入ssh服务器信息     
     * @return {@link Result<List<SshServerConfigExcelImport>>} ssh服务器信息     
     
     * @author Jia wei Wu
     * @date 2025/09/13 10:07 晚上
     **/

    public Result<List<SshServerConfigExcelImport>> importExcel(List<SshServerConfigExcelImport> sshServerConfigExcelImportList);

}